﻿using System;
using MoroMoro.Samples.ToDoList.Base.Persistence.NHibernate;
using NHibernate;

namespace MoroMoro.Samples.ToDoList.Persistence.NHibernate
{
    /// <summary>
    /// NHibernate を利用して実装される作業スペースのファクトリです。
    /// </summary>
    public sealed class NWorkspaceFactory : NWorkspaceFactoryBase
    {
        /// <summary>
        /// <see cref="NWorkspaceFactory"/> クラスの新しいインスタンスを初期化します。
        /// </summary>
        /// <param name="directoryPath">SQL Server CE 4.0 データベースファイルのディレクトリパス</param>
        /// <param name="fileName">SQL Server CE 4.0 データベースファイルの名前。</param>
        /// <exception cref="System.ArgumentException">directoryPath または fileName が無効な文字を含んでいます。</exception>
        /// <exception cref="System.ArgumentNullException">directoryPath または fileName が null です。</exception>
        public NWorkspaceFactory(string directoryPath, string fileName)
        {
            _connectionString = new ConnectionString(directoryPath, fileName);
        }


        /// <summary>
        /// SQL Server CE 4.0 接続文字列。
        /// </summary>
        private readonly ConnectionString _connectionString;


        /// <inheritdoc/>
        protected override ISessionFactory GetSessionFactory()
        {
            return NHConfig.GetSessionFactory(_connectionString);
        }
    }
}
